//
// ssl/stream_base.hpp
// ~~~~~~~~~~~~~~~~~~~
//
// Copyright (c) 2003-2017 Christopher M. Kohlhoff (chris at kohlhoff dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//

#ifndef ASIO_SSL_STREAM_BASE_HPP
#define ASIO_SSL_STREAM_BASE_HPP

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
#pragma once
#endif  // defined(_MSC_VER) && (_MSC_VER >= 1200)

#include <asio/detail/config.hpp>

// This must be after all other includes
#include <asio/detail/push_options.hpp>

namespace asio {
namespace ssl {

/// The stream_base class is used as a base for the asio::ssl::stream
/// class template so that we have a common place to define various enums.
class stream_base {
public:
    /// Different handshake types.
    enum handshake_type {
        /// Perform handshaking as a client.
        client,

        /// Perform handshaking as a server.
        server
    };

protected:
    /// Protected destructor to prevent deletion through this type.
    ~stream_base() {}
};

}  // namespace ssl
}  // namespace asio

#include <asio/detail/pop_options.hpp>

#endif  // ASIO_SSL_STREAM_BASE_HPP
